﻿/// <reference path="blueliger.js" />
/// <reference path="ISelectViewPart.js" />

// Public Class SelectActor
blueliger.SelectActor = function(name) {
    /// <summary>blueliger.SelectActor の新しいインスタンスを初期化します。</summary>
    /// <param name="name">インスタンスの名称を指定してください。</param>
    return this.Initialize(name);
};
blueliger.SelectActor.prototype =
{
    Name: ""
    , Data: undefined
    , SelectedIndex: 0
    , View: new blueliger.ISelectViewPart()
    , Visible : false
    , Initialize: function(name) {
        if (name == undefined || name == "") throw new Error("引数 name が指定されていません。");
        this.Name = name;
        return this;
    }
    , Shown: undefined
    , Show: function(data) {
        /// <summary>新しいデータを指定して、インスタンスの内容を表示します。</summary>
        /// <param name="data">表示するデータを指定してください。</param>
        this.Visible = true;
        this.Data = data;
        if (this.View != undefined && this.View.Show != undefined) this.View.Show(this.Data);
        if (this.Shown != undefined) this.Shown();
    }
    , Hidden: undefined
    , Hide: function() {
        /// <summary>データを削除して、インスタンスの内容を非表示にします。</summary>
        this.Visible = false;
        this.Data = undefined;
        if (this.View != undefined && this.View.Hide != undefined) this.View.Hide();
        if( this.Hidden != undefined ) this.Hidden();
    }
    , Selected: undefined
    , Select: function(index) {
        /// <summary>インスタンスの内容を選択します。</summary>
        /// <param name="index">選択する項目の 0 から始まるインデックス番号を指定してください。</param>
        this.SelectedIndex = index;
        if (this.View != undefined && this.View.Select != undefined) this.View.Select(index);
        if (this.Selected != undefined) this.Selected();
    }
    
}; // End Class
